From 0426ad1708083a3dfd316a89c307027cc264a2ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Wed, 20 Jun 2018 21:04:46 +0200 Subject: [PATCH] babl: refactor format registration to loop over types Also register full set of R~G~B~ and Y~ formats for all the types. --- babl/base/formats.c | 319 ++++++++++++++------------------------------ 1 file changed, 101 insertions(+), 218 deletions(-) diff --git a/babl/base/formats.c b/babl/base/formats.c index 7affcc5..959c472 100644 --- a/babl/base/formats.c +++ b/babl/base/formats.c @@ -27,297 +27,180 @@ void babl_formats_init (void) { - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR), + const Babl *types[]={ babl_type_from_id (BABL_DOUBLE), - babl_component_from_id (BABL_RED_NONLINEAR), - babl_component_from_id (BABL_GREEN_NONLINEAR), - babl_component_from_id (BABL_BLUE_NONLINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR), babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED_NONLINEAR), - babl_component_from_id (BABL_GREEN_NONLINEAR), - babl_component_from_id (BABL_BLUE_NONLINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_RED_NONLINEAR), - babl_component_from_id (BABL_GREEN_NONLINEAR), - babl_component_from_id (BABL_BLUE_NONLINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR), + babl_type_from_id (BABL_HALF), babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_RED_NONLINEAR), - babl_component_from_id (BABL_GREEN_NONLINEAR), - babl_component_from_id (BABL_BLUE_NONLINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR_PREMULTIPLIED), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_GREEN_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_BLUE_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR_PREMULTIPLIED), babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_RED_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_GREEN_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_BLUE_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_NONLINEAR_PREMULTIPLIED), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_RED_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_GREEN_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_BLUE_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGB_NONLINEAR), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED_NONLINEAR), - babl_component_from_id (BABL_GREEN_NONLINEAR), - babl_component_from_id (BABL_BLUE_NONLINEAR), - NULL); + babl_type_from_id (BABL_U32) + }; + for (int i = 0; i < sizeof (types)/sizeof(types[0]);i++) + { + const Babl *type = types[i]; + + babl_format_new ( + babl_model_from_id (BABL_RGBA_NONLINEAR_PREMULTIPLIED), + type, + babl_component_from_id (BABL_RED_NONLINEAR_MUL_ALPHA), + babl_component_from_id (BABL_GREEN_NONLINEAR_MUL_ALPHA), + babl_component_from_id (BABL_BLUE_NONLINEAR_MUL_ALPHA), + babl_component_from_id (BABL_ALPHA), + NULL); + + babl_format_new ( + babl_model_from_id (BABL_RGBA_PERCEPTUAL_PREMULTIPLIED), + type, + babl_component_from_id (BABL_RED_PERCEPTUAL_MUL_ALPHA), + babl_component_from_id (BABL_GREEN_PERCEPTUAL_MUL_ALPHA), + babl_component_from_id (BABL_BLUE_PERCEPTUAL_MUL_ALPHA), + babl_component_from_id (BABL_ALPHA), + NULL); + + babl_format_new ( + babl_model_from_id (BABL_RGBA_NONLINEAR), + type, + babl_component_from_id (BABL_RED_NONLINEAR), + babl_component_from_id (BABL_GREEN_NONLINEAR), + babl_component_from_id (BABL_BLUE_NONLINEAR), + babl_component_from_id (BABL_ALPHA), + NULL); + + babl_format_new ( + babl_model_from_id (BABL_RGBA_PERCEPTUAL), + type, + babl_component_from_id (BABL_RED_PERCEPTUAL), + babl_component_from_id (BABL_GREEN_PERCEPTUAL), + babl_component_from_id (BABL_BLUE_PERCEPTUAL), + babl_component_from_id (BABL_ALPHA), + NULL); + babl_format_new ( babl_model_from_id (BABL_RGB_NONLINEAR), - babl_type_from_id (BABL_U16), + type, babl_component_from_id (BABL_RED_NONLINEAR), babl_component_from_id (BABL_GREEN_NONLINEAR), babl_component_from_id (BABL_BLUE_NONLINEAR), NULL); babl_format_new ( babl_model_from_id (BABL_RGB_NONLINEAR), - babl_type_from_id (BABL_U8), + type, babl_component_from_id (BABL_RED_NONLINEAR), babl_component_from_id (BABL_GREEN_NONLINEAR), babl_component_from_id (BABL_BLUE_NONLINEAR), NULL); + babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_NONLINEAR), - babl_component_from_id (BABL_ALPHA), + babl_model_from_id (BABL_RGB_PERCEPTUAL), + type, + babl_component_from_id (BABL_RED_PERCEPTUAL), + babl_component_from_id (BABL_GREEN_PERCEPTUAL), + babl_component_from_id (BABL_BLUE_PERCEPTUAL), NULL); babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), + babl_model_from_id (BABL_RGB_PERCEPTUAL), + type, + babl_component_from_id (BABL_RED_PERCEPTUAL), + babl_component_from_id (BABL_GREEN_PERCEPTUAL), + babl_component_from_id (BABL_BLUE_PERCEPTUAL), NULL); + babl_format_new ( babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_NONLINEAR), - NULL); - babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA), - babl_type_from_id (BABL_U16), + type, babl_component_from_id (BABL_GRAY_NONLINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_GRAY_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), NULL); + babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_GRAY_NONLINEAR), + babl_model_from_id (BABL_MODEL_GRAY_PERCEPTUAL), + type, + babl_component_from_id (BABL_GRAY_PERCEPTUAL), NULL); + babl_format_new ( babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA), - babl_type_from_id (BABL_U8), + type, babl_component_from_id (BABL_GRAY_NONLINEAR), babl_component_from_id (BABL_ALPHA), NULL); - babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_GRAY_NONLINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_GRAY_NONLINEAR), - NULL); - /* overriding name, since the generated name would be wrong due - * to differing types - */ - babl_format_new ( - "name", "Y'CbCr u8", - "planar", - babl_model_from_id (BABL_YCBCR), - babl_type_from_id (BABL_U8_LUMA), - babl_sampling (1, 1), - babl_component_from_id (BABL_GRAY_NONLINEAR), - babl_type_from_id (BABL_U8_CHROMA), - babl_sampling (2, 2), - babl_component_from_id (BABL_CB), - babl_sampling (2, 2), - babl_component_from_id (BABL_CR), - NULL); - babl_format_new ( - babl_model_from_id (BABL_YCBCR), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_NONLINEAR), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_CB), - babl_component_from_id (BABL_CR), - NULL); - babl_format_new ( - babl_model_from_id (BABL_YCBCR_ALPHA), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_NONLINEAR), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_CB), - babl_component_from_id (BABL_CR), - babl_component_from_id (BABL_ALPHA), - NULL); babl_format_new ( - babl_model_from_id (BABL_RGBA), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED), - babl_component_from_id (BABL_GREEN), - babl_component_from_id (BABL_BLUE), + babl_model_from_id (BABL_MODEL_GRAY_PERCEPTUAL_ALPHA), + type, + babl_component_from_id (BABL_GRAY_PERCEPTUAL), babl_component_from_id (BABL_ALPHA), NULL); + babl_format_new ( - babl_model_from_id (BABL_RGBA), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_RED), - babl_component_from_id (BABL_GREEN), - babl_component_from_id (BABL_BLUE), + babl_model_from_id (BABL_MODEL_GRAY_NONLINEAR_ALPHA_PREMULTIPLIED), + type, + babl_component_from_id (BABL_GRAY_NONLINEAR_MUL_ALPHA), babl_component_from_id (BABL_ALPHA), NULL); + + babl_format_new ( babl_model_from_id (BABL_RGBA), - babl_type_from_id (BABL_DOUBLE), + type, babl_component_from_id (BABL_RED), babl_component_from_id (BABL_GREEN), babl_component_from_id (BABL_BLUE), babl_component_from_id (BABL_ALPHA), NULL); + babl_format_new ( - babl_model_from_id (BABL_RGBA), - babl_type_from_id (BABL_U8), + babl_model_from_id (BABL_RGB), + type, babl_component_from_id (BABL_RED), babl_component_from_id (BABL_GREEN), babl_component_from_id (BABL_BLUE), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_PREMULTIPLIED), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED_MUL_ALPHA), - babl_component_from_id (BABL_GREEN_MUL_ALPHA), - babl_component_from_id (BABL_BLUE_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGBA_PREMULTIPLIED), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_RED_MUL_ALPHA), - babl_component_from_id (BABL_GREEN_MUL_ALPHA), - babl_component_from_id (BABL_BLUE_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), NULL); + babl_format_new ( babl_model_from_id (BABL_RGBA_PREMULTIPLIED), - babl_type_from_id (BABL_U8), + type, babl_component_from_id (BABL_RED_MUL_ALPHA), babl_component_from_id (BABL_GREEN_MUL_ALPHA), babl_component_from_id (BABL_BLUE_MUL_ALPHA), babl_component_from_id (BABL_ALPHA), NULL); - babl_format_new ( - babl_model_from_id (BABL_RGB), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_RED), - babl_component_from_id (BABL_GREEN), - babl_component_from_id (BABL_BLUE), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGB), - babl_type_from_id (BABL_U16), - babl_component_from_id (BABL_RED), - babl_component_from_id (BABL_GREEN), - babl_component_from_id (BABL_BLUE), - NULL); - babl_format_new ( - babl_model_from_id (BABL_RGB), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_RED), - babl_component_from_id (BABL_GREEN), - babl_component_from_id (BABL_BLUE), - NULL); - babl_format_new ( - babl_model_from_id (BABL_GRAY_ALPHA), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_LINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_GRAY_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_LINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_GRAY), - babl_type_from_id (BABL_FLOAT), - babl_component_from_id (BABL_GRAY_LINEAR), - NULL); + babl_format_new ( babl_model_from_id (BABL_GRAY_ALPHA), - babl_type_from_id (BABL_U16), + type, babl_component_from_id (BABL_GRAY_LINEAR), babl_component_from_id (BABL_ALPHA), NULL); babl_format_new ( babl_model_from_id (BABL_GRAY_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_U16), + type, babl_component_from_id (BABL_GRAY_LINEAR_MUL_ALPHA), babl_component_from_id (BABL_ALPHA), NULL); babl_format_new ( babl_model_from_id (BABL_GRAY), - babl_type_from_id (BABL_U16), + type, babl_component_from_id (BABL_GRAY_LINEAR), NULL); + + } + + /* overriding name, since the generated name would be wrong due + * to differing types + */ babl_format_new ( - babl_model_from_id (BABL_GRAY_ALPHA), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_GRAY_LINEAR), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_GRAY_ALPHA_PREMULTIPLIED), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_GRAY_LINEAR_MUL_ALPHA), - babl_component_from_id (BABL_ALPHA), - NULL); - babl_format_new ( - babl_model_from_id (BABL_GRAY), - babl_type_from_id (BABL_U8), - babl_component_from_id (BABL_GRAY_LINEAR), + "name", "Y'CbCr u8", + "planar", + babl_model_from_id (BABL_YCBCR), + babl_type_from_id (BABL_U8_LUMA), + babl_sampling (1, 1), + babl_component_from_id (BABL_GRAY_NONLINEAR), + babl_type_from_id (BABL_U8_CHROMA), + babl_sampling (2, 2), + babl_component_from_id (BABL_CB), + babl_sampling (2, 2), + babl_component_from_id (BABL_CR), NULL); - babl_format_new ( babl_model_from_id (BABL_YCBCR), babl_type_from_id (BABL_FLOAT), -- 2.30.2